home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-
- #include <clib/alib_protos.h>
- #include <pragma/dos_lib.h>
- #include <pragma/exec_lib.h>
- #include <pragma/graphics_lib.h>
- #include <pragma/intuition_lib.h>
- #include <pragma/utility_lib.h>
- #include <pragma/wizard_lib.h>
-
- #include <exec/exec.h>
- #include <exec/memory.h>
- #include <gadgets/colorwheel.h>
- #include <gadgets/gradientslider.h>
- #include <intuition/gadgetclass.h>
- #include <intuition/intuition.h>
- #include <utility/utility.h>
- #include <libraries/wizard.h>
-
- struct Library *UtilityBase;
- struct Library *WizardBase;
- struct Library *ColorWheelBase;
-
- APTR MySurface;
- struct Screen *MyScreen;
- struct DrawInfo *MyDrInfo;
-
- struct WizardWindowHandle *MyWinHandle;
- struct NewWindow *MyNewWindow;
- struct Window *MyWindow;
-
- struct Gadget *MyGadgets[40];
-
- struct Gadget *MyColorWheel;
-
- struct TextAttr MyTextAttr=
- {
- "topaz.font",
- 8,0,0
- };
-
- struct MyListNode
- {
- struct WizardListNode Node;
- struct TagItem NodeTags[3];
- char Name[256];
- };
-
- struct MinList MyList;
-
-
- struct VImageDual
- {
- struct WizardVImage VImage;
-
- ULONG *Descr0;
- ULONG *Descr1;
-
- };
-
-
- ULONG MyVImageDescrNormal[]=
- {
- WVICMD_TAGCOLOR,0, // TagFarbe Nr 0 setzen
- WVICMD_MOVE,0,2,2, // farbige Fläche zeichnen
- WVICMD_RECTFILL,2,-2,-2,
-
- WVICMD_COLOR,0, // Hintergrundfarbe
- WVICMD_MOVE,0,0,0, // untere Kante
- WVICMD_DRAW,1,0,0,-1, // löschen
- WVICMD_MOVE,3,0,0, // hier die untere
- WVICMD_DRAW,2,0,0,-1,
-
- WVICMD_COLOR,WZRD_SHADOWPEN, // Rahmenfarbe setzen
- WVICMD_MOVE,0,0,1, // und den Rahmen
- WVICMD_DRAW,1,0,1,-1, // um unsere Fläche
- WVICMD_DRAW,2,0,-1,-1, // zeichnen
- WVICMD_DRAW,3,0,-1,-1,
- WVICMD_DRAW,0,0,1,-1,
-
- WVICMD_MOVE,0,1,2, // wir zeichnen aber
- WVICMD_DRAW,3,1,-2,-1, // die vertikalen
-
- WVICMD_MOVE,1,-1,2, // Linien doppelt
- WVICMD_DRAW,2,-1,-2,-1,
-
- WVICMD_END
- };
-
-
- ULONG MyVImageDescrSelected[]=
- {
- WVICMD_TAGCOLOR,1, // TagFarbe Nr 1 setzen
- WVICMD_MOVE,0,2,2, // farbige Fläche zeichnen
- WVICMD_RECTFILL,2,-2,-2,
-
- WVICMD_COLOR,WZRD_FILLPEN,
- WVICMD_MOVE,0,0,0, // untere Kante
- WVICMD_DRAW,1,0,0,-1, // löschen
- WVICMD_MOVE,3,0,0, // hier die untere
- WVICMD_DRAW,2,0,0,-1,
-
- WVICMD_COLOR,WZRD_SHADOWPEN, // Rahmenfarbe setzen
- WVICMD_MOVE,0,0,1, // und den Rahmen
- WVICMD_DRAW,1,0,1,-1, // um unsere Fläche
- WVICMD_DRAW,2,0,-1,-1, // zeichnen
- WVICMD_DRAW,3,0,-1,-1,
- WVICMD_DRAW,0,0,1,-1,
-
- WVICMD_MOVE,0,1,2, // wir zeichnen aber
- WVICMD_DRAW,3,1,-2,-1, // die vertikalen
-
- WVICMD_MOVE,1,-1,2, // Linien doppelt
- WVICMD_DRAW,2,-1,-2,-1,
-
- WVICMD_END
- };
-
-
- struct VImageDual MyVImage=
- {
- 0,0,0,0,
- 0,
-
- MyVImageDescrNormal,
- MyVImageDescrSelected
-
- };
-
- BOOL CreateNode(char *name,UWORD Pen,UWORD SPen)
- {
- BOOL Flag=FALSE;
-
- struct MyListNode *NewNode;
-
- if (NewNode=AllocVec(sizeof(MyListNode),MEMF_CLEAR|MEMF_PUBLIC))
- {
- Flag=TRUE;
-
- NewNode->Node.Entrys=1;
-
- NewNode->Node.StringEntrys[0].Pen=WZRD_TEXTPEN;
- NewNode->Node.StringEntrys[0].SPen=WZRD_FILLTEXTPEN;
-
- NewNode->Node.StringEntrys[0].String=NewNode->Name;
-
- NewNode->Node.VImage=(struct WizardVImage *)&MyVImage;
-
- NewNode->Node.VImageTags=(struct TagItem *)&NewNode->NodeTags;
-
- NewNode->NodeTags[0].ti_Tag=WVIA_Color0;
- NewNode->NodeTags[0].ti_Data=Pen;
-
- NewNode->NodeTags[1].ti_Tag=WVIA_Color1;
- NewNode->NodeTags[1].ti_Data=SPen;
-
- NewNode->NodeTags[2].ti_Tag=0;
- NewNode->NodeTags[2].ti_Data=0;
-
- strcpy(NewNode->Name,name);
-
- AddTail((struct List *)&MyList,(struct Node *)NewNode);
- }
-
- return(Flag);
- }
-
- main()
- {
- BOOL Flag=FALSE;
-
- struct IntuiMessage *msg;
-
- NewList((struct List *)&MyList);
-
- if (UtilityBase=OpenLibrary("utility.library",0L))
- {
- if (WizardBase=OpenLibrary("wizard.library",0L))
- {
- if (ColorWheelBase=OpenLibrary("gadgets/colorwheel.gadget",0L))
- {
- if (MySurface=WZ_OpenSurface("palette.wizard",0,TAG_DONE))
- {
- if (MyScreen=OpenScreenTags(0L,SA_LikeWorkbench,TRUE,
- SA_Width,640,
- SA_Height,304,
- SA_Depth,8,
- SA_SharePens,TRUE,
- SA_Font,&MyTextAttr,
- SA_Title,"Palette Preferences",
- TAG_DONE))
- {
- ULONG RGBValues[3*4];
-
- GetRGB32(MyScreen->ViewPort.ColorMap,252,4,(ULONG *)&RGBValues);
-
- SetRGB32(&MyScreen->ViewPort,4,RGBValues[0],RGBValues[1],RGBValues[2]);
- SetRGB32(&MyScreen->ViewPort,5,RGBValues[3],RGBValues[4],RGBValues[5]);
- SetRGB32(&MyScreen->ViewPort,6,RGBValues[6],RGBValues[7],RGBValues[8]);
- SetRGB32(&MyScreen->ViewPort,7,RGBValues[9],RGBValues[10],RGBValues[11]);
-
-
- if (MyDrInfo=GetScreenDrawInfo(MyScreen))
- {
- if (MyColorWheel=NewObject(0L,"colorwheel.gadget",
- GA_ID,50,
-
- GA_Left,95,
- GA_Top,41,
- GA_Width,141,
- GA_Height,85,
-
- GA_DrawInfo,MyDrInfo,
- WHEEL_Screen,MyScreen,
- TAG_DONE))
- {
-
- if (MyWinHandle=WZ_AllocWindowHandle(MyScreen,0,MySurface,TAG_DONE))
- {
- if (MyNewWindow=WZ_CreateWindowObj(MyWinHandle,1,
- WWH_GadgetArray,&MyGadgets,
- WWH_GadgetArraySize,sizeof(MyGadgets),
- WWH_PreviousGadget,MyColorWheel,
- TAG_DONE))
- {
- MyNewWindow->TopEdge=MyScreen->BarHeight;
-
- MyNewWindow->FirstGadget=MyColorWheel;
- /* Wir wollen schliesslich unsere eigenen **
- ** Gadgets auch beim Betriebssystem **
- ** angemeldet wissen ! */
-
- if (CreateNode("Background",WZRD_BACKGROUNDPEN,WZRD_BACKGROUNDPEN))
- if (CreateNode("Text",WZRD_TEXTPEN,WZRD_TEXTPEN))
- if (CreateNode("Important Text",WZRD_HIGHLIGHTTEXTPEN,WZRD_HIGHLIGHTTEXTPEN))
- if (CreateNode("Bright Edges",WZRD_SHINEPEN,WZRD_SHINEPEN))
- if (CreateNode("Dark Edges",WZRD_SHADOWPEN,WZRD_SHADOWPEN))
- if (CreateNode("Active Windowtitle Bars",WZRD_FILLPEN,WZRD_FILLPEN))
- if (CreateNode("Active Window Titles",WZRD_FILLTEXTPEN,WZRD_FILLTEXTPEN))
- if (CreateNode("Menu Background",WZRD_BARBLOCKPEN,WZRD_BARBLOCKPEN))
- if (CreateNode("Menu Text",WZRD_BARDETAILPEN,WZRD_BARDETAILPEN))
- {
- SetGadgetAttrs(MyGadgets[19],0L,0L,WLISTVIEWA_List,&MyList,
- WLISTVIEWA_ImageWidth,16,
- TAG_DONE);
-
- if (MyWindow=WZ_OpenWindow(MyWinHandle,MyNewWindow,
- WA_AutoAdjust,TRUE,
- TAG_DONE))
- {
- do
- {
- WaitPort(MyWindow->UserPort); /* Auf CloseWindow warten*/
-
- if (msg=(struct IntuiMessage *)GetMsg(MyWindow->UserPort))
- {
- switch (msg->Class)
- {
- case IDCMP_MENUPICK:
- {
- if (msg->Code==FULLMENUNUM(0,3,-1))
- Flag=TRUE;
- }
- break;
- }
- ReplyMsg((struct Message *)msg);
- }
- } while (Flag!=TRUE);
-
- WZ_CloseWindow(MyWinHandle);
- }
- }
-
- }
- WZ_FreeWindowHandle(MyWinHandle);
- }
- DisposeObject(MyColorWheel);
- }
- FreeScreenDrawInfo(MyScreen,MyDrInfo);
- }
- CloseScreen(MyScreen);
- }
-
- WZ_CloseSurface(MySurface);
- }
- CloseLibrary(ColorWheelBase);
- }
- CloseLibrary(WizardBase);
- }
- CloseLibrary(UtilityBase);
- }
-
-
-
- while (MyList.mlh_Head->mln_Succ)
- {
- struct Node *t=(struct Node*)MyList.mlh_Head;
-
- Remove(t);
- FreeVec((APTR)t)
- }
- };